package cn.edu.xjtu.carlWay.array.squaresOfASortedArray;

/**
 * 977. 有序数组的平方
 * <p>
 * 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/squares-of-a-sorted-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution {
    public int[] sortedSquares(int[] nums) {
        int insertIndex = nums.length - 1;
        int[] ret = new int[nums.length];
        int left = 0;
        int right = insertIndex;

        while (insertIndex >= 0) {
            if (Math.abs(nums[left]) >= Math.abs(nums[right])) {
                ret[insertIndex] = nums[left] * nums[left];
                left++;
            } else {
                ret[insertIndex] = nums[right] * nums[right];
                right--;
            }
            insertIndex--;
        }
        return ret;
    }
}

